/* $begin show-bytes */
#include <stdio.h>
/* $end show-bytes */
#include <stdlib.h>
#include <string.h>
/* $begin show-bytes */

typedef unsigned char *byte_pointer;

void show_bytes(byte_pointer start, size_t len)
{
    size_t i;
    for (i = 0; i < len; i++)
        printf(" %.2x", start[i]); //line:data:show_bytes_printf
    printf("\n");
}

int main(int argc, char *argv[])
{
    short sx = -12345;
    unsigned short usx = sx;
    int x = sx;
    unsigned int ux = usx;
    unsigned int uy = sx;

    printf("sx = %d:\t", sx);
    show_bytes((byte_pointer)&sx, sizeof(short));

    printf("usx = %u:\t", usx);
    show_bytes((byte_pointer)&usx, sizeof(unsigned short));

    printf("x = %d:\t", x);
    show_bytes((byte_pointer)&x, sizeof(int));

    printf("ux = %u:\t", ux);
    show_bytes((byte_pointer)&ux, sizeof(unsigned int));

    printf("ux = %u:\t", uy);
    show_bytes((byte_pointer)&uy, sizeof(unsigned int));
    return 0;
}
